first lookup the xfont ID in our font hash table, if we have a
authorTim Janik <timj@gtk.org>
Wed, 10 Mar 1999 01:15:03 +0000 (01:15 +0000)
committerTim Janik <timj@src.gnome.org>
Wed, 10 Mar 1999 01:15:03 +0000 (01:15 +0000)
Tue Mar  9 01:01:28 1999  Tim Janik  <timj@gtk.org>

        * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
        font hash table, if we have a GdkFontPrivate entry for this font
        already, simply increment its reference count, provided by Olaf Dietsche
        <olaf.dietsche+list.gtk@netcologne.de>.

        * gtk/gtkstyle.c (gtk_style_copy): plug a GdkFont reference leak, fix
        provided by Olaf Dietsche <olaf.dietsche+list.gtk@netcologne.de>.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/gdkfont.c
gdk/x11/gdkfont-x11.c
gtk/gtkstyle.c

index fd78beb12fedd25223194e9c00efbbdb1797ca1b..e297de11aed106f881abf7733580b7d26051ece5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+Tue Mar  9 01:01:28 1999  Tim Janik  <timj@gtk.org>
+
+        * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
+        font hash table, if we have a GdkFontPrivate entry for this font
+        already, simply increment its reference count, provided by Olaf Dietsche
+        <olaf.dietsche+list.gtk@netcologne.de>.
+
+        * gtk/gtkstyle.c (gtk_style_copy): plug a GdkFont reference leak, fix
+        provided by Olaf Dietsche <olaf.dietsche+list.gtk@netcologne.de>.
+
 1999-03-09  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkstyle.c (gtk_default_draw_handle): Significantly reduced
index fd78beb12fedd25223194e9c00efbbdb1797ca1b..e297de11aed106f881abf7733580b7d26051ece5 100644 (file)
@@ -1,3 +1,13 @@
+Tue Mar  9 01:01:28 1999  Tim Janik  <timj@gtk.org>
+
+        * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
+        font hash table, if we have a GdkFontPrivate entry for this font
+        already, simply increment its reference count, provided by Olaf Dietsche
+        <olaf.dietsche+list.gtk@netcologne.de>.
+
+        * gtk/gtkstyle.c (gtk_style_copy): plug a GdkFont reference leak, fix
+        provided by Olaf Dietsche <olaf.dietsche+list.gtk@netcologne.de>.
+
 1999-03-09  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkstyle.c (gtk_default_draw_handle): Significantly reduced
index fd78beb12fedd25223194e9c00efbbdb1797ca1b..e297de11aed106f881abf7733580b7d26051ece5 100644 (file)
@@ -1,3 +1,13 @@
+Tue Mar  9 01:01:28 1999  Tim Janik  <timj@gtk.org>
+
+        * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
+        font hash table, if we have a GdkFontPrivate entry for this font
+        already, simply increment its reference count, provided by Olaf Dietsche
+        <olaf.dietsche+list.gtk@netcologne.de>.
+
+        * gtk/gtkstyle.c (gtk_style_copy): plug a GdkFont reference leak, fix
+        provided by Olaf Dietsche <olaf.dietsche+list.gtk@netcologne.de>.
+
 1999-03-09  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkstyle.c (gtk_default_draw_handle): Significantly reduced
index fd78beb12fedd25223194e9c00efbbdb1797ca1b..e297de11aed106f881abf7733580b7d26051ece5 100644 (file)
@@ -1,3 +1,13 @@
+Tue Mar  9 01:01:28 1999  Tim Janik  <timj@gtk.org>
+
+        * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
+        font hash table, if we have a GdkFontPrivate entry for this font
+        already, simply increment its reference count, provided by Olaf Dietsche
+        <olaf.dietsche+list.gtk@netcologne.de>.
+
+        * gtk/gtkstyle.c (gtk_style_copy): plug a GdkFont reference leak, fix
+        provided by Olaf Dietsche <olaf.dietsche+list.gtk@netcologne.de>.
+
 1999-03-09  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkstyle.c (gtk_default_draw_handle): Significantly reduced
index fd78beb12fedd25223194e9c00efbbdb1797ca1b..e297de11aed106f881abf7733580b7d26051ece5 100644 (file)
@@ -1,3 +1,13 @@
+Tue Mar  9 01:01:28 1999  Tim Janik  <timj@gtk.org>
+
+        * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
+        font hash table, if we have a GdkFontPrivate entry for this font
+        already, simply increment its reference count, provided by Olaf Dietsche
+        <olaf.dietsche+list.gtk@netcologne.de>.
+
+        * gtk/gtkstyle.c (gtk_style_copy): plug a GdkFont reference leak, fix
+        provided by Olaf Dietsche <olaf.dietsche+list.gtk@netcologne.de>.
+
 1999-03-09  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkstyle.c (gtk_default_draw_handle): Significantly reduced
index fd78beb12fedd25223194e9c00efbbdb1797ca1b..e297de11aed106f881abf7733580b7d26051ece5 100644 (file)
@@ -1,3 +1,13 @@
+Tue Mar  9 01:01:28 1999  Tim Janik  <timj@gtk.org>
+
+        * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
+        font hash table, if we have a GdkFontPrivate entry for this font
+        already, simply increment its reference count, provided by Olaf Dietsche
+        <olaf.dietsche+list.gtk@netcologne.de>.
+
+        * gtk/gtkstyle.c (gtk_style_copy): plug a GdkFont reference leak, fix
+        provided by Olaf Dietsche <olaf.dietsche+list.gtk@netcologne.de>.
+
 1999-03-09  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkstyle.c (gtk_default_draw_handle): Significantly reduced
index fd78beb12fedd25223194e9c00efbbdb1797ca1b..e297de11aed106f881abf7733580b7d26051ece5 100644 (file)
@@ -1,3 +1,13 @@
+Tue Mar  9 01:01:28 1999  Tim Janik  <timj@gtk.org>
+
+        * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
+        font hash table, if we have a GdkFontPrivate entry for this font
+        already, simply increment its reference count, provided by Olaf Dietsche
+        <olaf.dietsche+list.gtk@netcologne.de>.
+
+        * gtk/gtkstyle.c (gtk_style_copy): plug a GdkFont reference leak, fix
+        provided by Olaf Dietsche <olaf.dietsche+list.gtk@netcologne.de>.
+
 1999-03-09  Federico Mena Quintero  <federico@nuclecu.unam.mx>
 
        * gtk/gtkstyle.c (gtk_default_draw_handle): Significantly reduced
index 91e728c5929312121f47be884c744d5a891d2ddd..d1f779a06424a3933e31389527d01c5f1baa4fa0 100644 (file)
@@ -34,27 +34,37 @@ gdk_font_load (const gchar *font_name)
 {
   GdkFont *font;
   GdkFontPrivate *private;
+  XFontStruct *xfont;
 
-  private = g_new (GdkFontPrivate, 1);
-  font = (GdkFont*) private;
+  g_return_val_if_fail (font_name != NULL, NULL);
 
-  private->xdisplay = gdk_display;
-  private->xfont = XLoadQueryFont (private->xdisplay, font_name);
-  private->ref_count = 1;
+  xfont = XLoadQueryFont (gdk_display, font_name);
+  if (xfont == NULL)
+    return NULL;
 
-  if (!private->xfont)
+  font = gdk_font_lookup (xfont->fid);
+  if (font != NULL)
     {
-      g_free (font);
-      return NULL;
+      private = (GdkFontPrivate *) font;
+      if (xfont != private->xfont)
+       XFreeFont (gdk_display, xfont);
+
+      gdk_font_ref (font);
     }
   else
     {
+      private = g_new (GdkFontPrivate, 1);
+      private->xdisplay = gdk_display;
+      private->xfont = xfont;
+      private->ref_count = 1;
+
+      font = (GdkFont*) private;
       font->type = GDK_FONT_FONT;
-      font->ascent =  ((XFontStruct *) private->xfont)->ascent;
-      font->descent = ((XFontStruct *) private->xfont)->descent;
-    }
+      font->ascent =  xfont->ascent;
+      font->descent = xfont->descent;
 
-  gdk_xid_table_insert (&((XFontStruct *) private->xfont)->fid, font);
+      gdk_xid_table_insert (&xfont->fid, font);
+    }
 
   return font;
 }
index 91e728c5929312121f47be884c744d5a891d2ddd..d1f779a06424a3933e31389527d01c5f1baa4fa0 100644 (file)
@@ -34,27 +34,37 @@ gdk_font_load (const gchar *font_name)
 {
   GdkFont *font;
   GdkFontPrivate *private;
+  XFontStruct *xfont;
 
-  private = g_new (GdkFontPrivate, 1);
-  font = (GdkFont*) private;
+  g_return_val_if_fail (font_name != NULL, NULL);
 
-  private->xdisplay = gdk_display;
-  private->xfont = XLoadQueryFont (private->xdisplay, font_name);
-  private->ref_count = 1;
+  xfont = XLoadQueryFont (gdk_display, font_name);
+  if (xfont == NULL)
+    return NULL;
 
-  if (!private->xfont)
+  font = gdk_font_lookup (xfont->fid);
+  if (font != NULL)
     {
-      g_free (font);
-      return NULL;
+      private = (GdkFontPrivate *) font;
+      if (xfont != private->xfont)
+       XFreeFont (gdk_display, xfont);
+
+      gdk_font_ref (font);
     }
   else
     {
+      private = g_new (GdkFontPrivate, 1);
+      private->xdisplay = gdk_display;
+      private->xfont = xfont;
+      private->ref_count = 1;
+
+      font = (GdkFont*) private;
       font->type = GDK_FONT_FONT;
-      font->ascent =  ((XFontStruct *) private->xfont)->ascent;
-      font->descent = ((XFontStruct *) private->xfont)->descent;
-    }
+      font->ascent =  xfont->ascent;
+      font->descent = xfont->descent;
 
-  gdk_xid_table_insert (&((XFontStruct *) private->xfont)->fid, font);
+      gdk_xid_table_insert (&xfont->fid, font);
+    }
 
   return font;
 }
index 323118dd3b484ff42727c194df280f249c41ea1a..30a60363fca0d839eae2237ec0cfd9173891b755 100644 (file)
@@ -362,6 +362,7 @@ gtk_style_copy (GtkStyle *style)
       new_style->bg_pixmap[i] = style->bg_pixmap[i];
     }
   
+  gdk_font_unref (new_style->font);
   new_style->font = style->font;
   gdk_font_ref (new_style->font);